package aop10;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Pointcut;

public class Log {


    public void before(JoinPoint jp){
        Object pxoy=jp.getThis();
        Object target=jp.getTarget();
        String methodName=jp.getSignature().getName();
        Object[] args=jp.getArgs();
        System.out.println("-------代理"+pxoy.getClass().getSimpleName()+"类，目标"+target.getClass().getSimpleName()+"类"+methodName+"方法即将执行，参数个数："+args.length);
    }

    public void afterReturning(JoinPoint jp,Object r){
        Object pxoy=jp.getThis();
        Object target=jp.getTarget();
        String methodName=jp.getSignature().getName();
        Object[] args=jp.getArgs();
        System.out.println("-------代理"+pxoy.getClass().getSimpleName()+"类，目标"+target.getClass().getSimpleName()+"类"+methodName+"方法已经返回，返回值是："+r);
    }

    public void afterThrowing(JoinPoint jp,Exception e){
        Object pxoy=jp.getThis();
        Object target=jp.getTarget();
        String methodName=jp.getSignature().getName();
        Object[] args=jp.getArgs();
        System.out.println("-------代理"+pxoy.getClass().getSimpleName()+"类，目标"+target.getClass().getSimpleName()+"类"+methodName+"方法已经出错，异常对象是："+e);
    }


}
